/*
 * @Author: C.
 * @Date: 2021-08-30 13:28:38
 * @LastEditTime: 2021-09-06 09:03:14
 * @Description: file content
 */
// 位置信息
export interface PosInfo {
  // left
  x: number;
  // right
  y: number;
  // width
  w: number;
  // height
  h: number;
}
// 样式信息
export interface EleStyle extends PosInfo {
  // 字体风格
  fontFamily?: 'inherit';
  // 字体样式
  fontStyle?: string[];
  // 字体大小
  fontSize: 16 | number;
  // 对齐方式
  textAlign: 'center' | 'left' | 'right';
  // 加粗
  fontWeight: 'normal' | 'bold';
}
// 打印字段
export interface FieldInfo {
  id: string;
  // 展示
  show: boolean;
  // 样式
  style: EleStyle;
  // 元素类型
  role: 'qrcode' | 'value' | 'label' | 'image' | 'insertImg';
  // 标签描述
  label: string;
  // 字段值
  prop: string;
  // 过滤器
  filter?: string;
  // 链接
  url?: string;
}
// 表格字段
export interface TableInfo {
  id: string;
  show: boolean;
  prop: string;
  // 展示合计
  showSum: boolean;
  // 标题
  title: FieldInfo;
  // 字段表
  fields: FieldInfo[][];
}
// 纸张类型
interface PaperStyle {
  // 纸张类型
  paperType: string;
  // 纸张方向
  direction: 'portrait' | 'landscape';
  // 左边距
  marginLeft: number;
  // 右边距
  marginRight: number;
  // 上边距
  marginTop: number;
  // 下边距
  marginBottom: number;
}
// 模块类型
interface PrintBlock {
  // 模块样式
  style: Pick<PosInfo, 'w' | 'h'>;
  // 子元素
  nodes: FieldInfo[];
}
export interface PrintTemplate {
  // 纸张类型
  paperStyle: PaperStyle;
  // 跟随头
  header: PrintBlock;
  // 打印体
  body: PrintBlock;
  // 打印表格
  table: TableInfo[];
  // 尾部
  footer: PrintBlock;
}
